For this project, we will be using three different data sets. The csvs that we will be using are “OIS_Dataset_Incidents.csv”, “OIS_Dataset_Officers”, and “OIS_Dataset_Subjects.csv”. These datasets involve cases with incidents, police officers, and subjects within Austin, TX. We also joined the datasets with the Census Data called “Austin_Race”, where we will be comparing the races with the OIS_Dataset. The first dataset is “OIS_Dataset_Incidents.csv”. Mainly describes when, where, and how the incident occured. The second dataset is “OIS_Dataset_Officers”. Here describes who the officers were during those incidents, which includes their age, gender, etc. The third dataset is “OIS_Dataset_Subjects.csv”. This describes the subjects who were involved in the incidents, including their race/ethnicity, age, etc.
To download the data needed for this project:
Below is our sessionInfo().
sessionInfo(package=NULL)
## R version 3.3.2 (2016-10-31)
## Platform: x86_64-w64-mingw32/x64 (64-bit)
## Running under: Windows 10 x64 (build 14393)
##
## locale:
## [1] LC_COLLATE=English_United States.1252
## [2] LC_CTYPE=English_United States.1252
## [3] LC_MONETARY=English_United States.1252
## [4] LC_NUMERIC=C
## [5] LC_TIME=English_United States.1252
##
## attached base packages:
## [1] stats graphics grDevices utils datasets methods base
##
## loaded via a namespace (and not attached):
## [1] backports_1.0.5 magrittr_1.5 rprojroot_1.2 tools_3.3.2
## [5] htmltools_0.3.5 yaml_2.1.14 Rcpp_0.12.10 stringi_1.1.2
## [9] rmarkdown_1.4 knitr_1.15.1 stringr_1.1.0 digest_0.6.11
## [13] evaluate_0.10
Here we have the ETL code to clean our datasets. These datasets have already been cleaned.
source("../01 Data/ETL.OIS_Dataset_Incidents.R")
## Loading required package: readr
## Warning: package 'readr' was built under R version 3.3.3
## Loading required package: plyr
## Parsed with column specification:
## cols(
## Case_Number = col_character(),
## Date = col_character(),
## Day_of_Week = col_character(),
## Time = col_character(),
## Day_Part = col_character(),
## Premise_Category = col_character(),
## Inside_or_Outside = col_character(),
## Subject_Weapon = col_character(),
## Number_of_Officer_Shooters = col_integer(),
## Call_Type_Categories = col_character(),
## Number_of_Officers_When_Shots_Fired = col_integer(),
## Number_of_Hits = col_integer(),
## Location_1 = col_character()
## )
## Warning in `[<-.factor`(`*tmp*`, is.na(x), value = ""): invalid factor
## level, NA generated
## Warning in `[<-.factor`(`*tmp*`, is.na(x), value = ""): invalid factor
## level, NA generated
## Warning in `[<-.factor`(`*tmp*`, is.na(x), value = ""): invalid factor
## level, NA generated
## Warning in `[<-.factor`(`*tmp*`, is.na(x), value = ""): invalid factor
## level, NA generated
## Warning in `[<-.factor`(`*tmp*`, is.na(x), value = ""): invalid factor
## level, NA generated
## Warning in `[<-.factor`(`*tmp*`, is.na(x), value = ""): invalid factor
## level, NA generated
## Warning in `[<-.factor`(`*tmp*`, is.na(x), value = ""): invalid factor
## level, NA generated
## Warning in `[<-.factor`(`*tmp*`, is.na(x), value = ""): invalid factor
## level, NA generated
## Warning in `[<-.factor`(`*tmp*`, is.na(x), value = ""): invalid factor
## level, NA generated
## Warning in `[<-.factor`(`*tmp*`, is.na(x), value = ""): invalid factor
## level, NA generated
## [1] "Number_of_Officer_Shooters"
## Warning in `[<-.factor`(`*tmp*`, is.na(x), value = 0): invalid factor
## level, NA generated
## [1] "Number_of_Officers_When_Shots_Fired"
## Warning in `[<-.factor`(`*tmp*`, is.na(x), value = 0): invalid factor
## level, NA generated
## [1] "Number_of_Hits"
## Classes 'tbl_df', 'tbl' and 'data.frame': 52 obs. of 13 variables:
## $ Case_Number : Factor w/ 52 levels "06-0011398","06-0151964",..: 51 38 30 41 31 39 37 43 47 48 ...
## $ Date : Factor w/ 51 levels "1/1/2006","1/14/2013",..: 43 42 32 11 50 48 34 13 24 35 ...
## $ Day_of_Week : Factor w/ 7 levels "Fri","Mon","Sat",..: 4 1 5 4 6 3 1 1 4 4 ...
## $ Time : Factor w/ 52 levels "0;13","0;19",..: 42 13 18 27 25 1 35 22 6 5 ...
## $ Day_Part : Factor w/ 6 levels "day","Day","Evening",..: 4 3 3 3 3 5 5 5 4 4 ...
## $ Premise_Category : Factor w/ 8 levels "Business","Park",..: 1 7 8 8 3 3 8 6 8 8 ...
## $ Inside_or_Outside : Factor w/ 3 levels "Inside","Inside / Outside",..: 1 3 3 1 3 3 3 3 3 3 ...
## $ Subject_Weapon : Factor w/ 9 levels "air pistol (BB gun)",..: 8 5 4 2 2 9 2 8 8 2 ...
## $ Number_of_Officer_Shooters : num 1 1 1 2 1 1 1 1 1 2 ...
## $ Call_Type_Categories : Factor w/ 14 levels "armed subject",..: 9 7 13 3 11 2 9 9 9 4 ...
## $ Number_of_Officers_When_Shots_Fired: num 3 1 1 9 2 1 3 10 26 3 ...
## $ Number_of_Hits : num 10 1 3 1 1 5 0 1 1 3 ...
## $ Location_1 : Factor w/ 51 levels "10607 Golden Quail Drive(30.379803, -97.702036)",..: 50 51 25 15 16 49 33 37 45 30 ...
## - attr(*, "spec")=List of 2
## ..$ cols :List of 13
## .. ..$ Case_Number : list()
## .. .. ..- attr(*, "class")= chr "collector_character" "collector"
## .. ..$ Date : list()
## .. .. ..- attr(*, "class")= chr "collector_character" "collector"
## .. ..$ Day_of_Week : list()
## .. .. ..- attr(*, "class")= chr "collector_character" "collector"
## .. ..$ Time : list()
## .. .. ..- attr(*, "class")= chr "collector_character" "collector"
## .. ..$ Day_Part : list()
## .. .. ..- attr(*, "class")= chr "collector_character" "collector"
## .. ..$ Premise_Category : list()
## .. .. ..- attr(*, "class")= chr "collector_character" "collector"
## .. ..$ Inside_or_Outside : list()
## .. .. ..- attr(*, "class")= chr "collector_character" "collector"
## .. ..$ Subject_Weapon : list()
## .. .. ..- attr(*, "class")= chr "collector_character" "collector"
## .. ..$ Number_of_Officer_Shooters : list()
## .. .. ..- attr(*, "class")= chr "collector_integer" "collector"
## .. ..$ Call_Type_Categories : list()
## .. .. ..- attr(*, "class")= chr "collector_character" "collector"
## .. ..$ Number_of_Officers_When_Shots_Fired: list()
## .. .. ..- attr(*, "class")= chr "collector_integer" "collector"
## .. ..$ Number_of_Hits : list()
## .. .. ..- attr(*, "class")= chr "collector_integer" "collector"
## .. ..$ Location_1 : list()
## .. .. ..- attr(*, "class")= chr "collector_character" "collector"
## ..$ default: list()
## .. ..- attr(*, "class")= chr "collector_guess" "collector"
## ..- attr(*, "class")= chr "col_spec"
source("../01 Data/ETL.OIS_Dataset_Officers.R")
## Parsed with column specification:
## cols(
## Case_Number = col_character(),
## Date = col_character(),
## Officer_Name = col_character(),
## Rank = col_character(),
## Officer_Race_Ethnicity = col_character(),
## Officer_Gender = col_character(),
## Officer_Age = col_integer(),
## PD_Jurisdiction = col_character(),
## Years_LE_Experience = col_double(),
## Prev_OIS = col_character(),
## Officer_Weapon_Caliber = col_character(),
## Officer_Weapon_Type = col_character(),
## Number_of_Shots_Fired_by_Officer = col_integer(),
## How_Cleared = col_character(),
## Location_1 = col_character()
## )
## Warning in `[<-.factor`(`*tmp*`, is.na(x), value = ""): invalid factor
## level, NA generated
## Warning in `[<-.factor`(`*tmp*`, is.na(x), value = ""): invalid factor
## level, NA generated
## Warning in `[<-.factor`(`*tmp*`, is.na(x), value = ""): invalid factor
## level, NA generated
## Warning in `[<-.factor`(`*tmp*`, is.na(x), value = ""): invalid factor
## level, NA generated
## Warning in `[<-.factor`(`*tmp*`, is.na(x), value = ""): invalid factor
## level, NA generated
## Warning in `[<-.factor`(`*tmp*`, is.na(x), value = ""): invalid factor
## level, NA generated
## Warning in `[<-.factor`(`*tmp*`, is.na(x), value = ""): invalid factor
## level, NA generated
## Warning in `[<-.factor`(`*tmp*`, is.na(x), value = ""): invalid factor
## level, NA generated
## Warning in `[<-.factor`(`*tmp*`, is.na(x), value = ""): invalid factor
## level, NA generated
## Warning in `[<-.factor`(`*tmp*`, is.na(x), value = ""): invalid factor
## level, NA generated
## Warning in `[<-.factor`(`*tmp*`, is.na(x), value = ""): invalid factor
## level, NA generated
## Warning in `[<-.factor`(`*tmp*`, is.na(x), value = ""): invalid factor
## level, NA generated
## [1] "Officer_Age"
## Warning in `[<-.factor`(`*tmp*`, is.na(x), value = 0): invalid factor
## level, NA generated
## [1] "Years_LE_Experience"
## Warning in `[<-.factor`(`*tmp*`, is.na(x), value = 0): invalid factor
## level, NA generated
## [1] "Number_of_Shots_Fired_by_Officer"
## Warning in `[<-.factor`(`*tmp*`, is.na(x), value = 0): invalid factor
## level, NA generated
## Classes 'tbl_df', 'tbl' and 'data.frame': 71 obs. of 15 variables:
## $ Case_Number : Factor w/ 52 levels "06-0011398","06-0151964",..: 51 38 30 16 41 31 6 21 21 50 ...
## $ Date : Factor w/ 51 levels "1/1/2006","1/14/2013",..: 43 42 32 46 11 50 29 12 12 43 ...
## $ Officer_Name : Factor w/ 69 levels "Agt. Joe Cronin (TABC)",..: 16 8 27 2 42 29 4 65 32 61 ...
## $ Rank : Factor w/ 7 levels "cpl","det","ofc",..: 3 2 3 4 3 3 1 3 3 3 ...
## $ Officer_Race_Ethnicity : Factor w/ 4 levels "Asian","Black",..: 3 4 4 4 3 4 4 4 4 4 ...
## $ Officer_Gender : Factor w/ 2 levels "Female","Male": 2 2 2 2 2 2 2 2 2 2 ...
## $ Officer_Age : num 36 49 36 36 34 36 40 25 30 24 ...
## $ PD_Jurisdiction : Factor w/ 5 levels "APD","Park Police",..: 1 1 1 3 1 1 1 1 1 1 ...
## $ Years_LE_Experience : num 9.6 19 2 16 4 8 14 3 3 0.6 ...
## $ Prev_OIS : Factor w/ 2 levels "No","Yes": 1 1 1 1 1 1 1 2 1 1 ...
## $ Officer_Weapon_Caliber : Factor w/ 8 levels "0.223","0.308",..: 4 3 3 3 1 3 8 6 3 3 ...
## $ Officer_Weapon_Type : Factor w/ 4 levels "rifle","semi-auto",..: 3 2 2 2 1 2 2 4 2 2 ...
## $ Number_of_Shots_Fired_by_Officer: num 16 1 3 16 1 6 4 4 2 3 ...
## $ How_Cleared : Factor w/ 6 levels "DOJ review cleared officers",..: 4 5 2 2 2 2 2 2 2 4 ...
## $ Location_1 : Factor w/ 51 levels "10607 Golden Quail Drive(30.379803, -97.702036)",..: 50 51 25 11 15 16 28 8 8 1 ...
## - attr(*, "spec")=List of 2
## ..$ cols :List of 15
## .. ..$ Case_Number : list()
## .. .. ..- attr(*, "class")= chr "collector_character" "collector"
## .. ..$ Date : list()
## .. .. ..- attr(*, "class")= chr "collector_character" "collector"
## .. ..$ Officer_Name : list()
## .. .. ..- attr(*, "class")= chr "collector_character" "collector"
## .. ..$ Rank : list()
## .. .. ..- attr(*, "class")= chr "collector_character" "collector"
## .. ..$ Officer_Race_Ethnicity : list()
## .. .. ..- attr(*, "class")= chr "collector_character" "collector"
## .. ..$ Officer_Gender : list()
## .. .. ..- attr(*, "class")= chr "collector_character" "collector"
## .. ..$ Officer_Age : list()
## .. .. ..- attr(*, "class")= chr "collector_integer" "collector"
## .. ..$ PD_Jurisdiction : list()
## .. .. ..- attr(*, "class")= chr "collector_character" "collector"
## .. ..$ Years_LE_Experience : list()
## .. .. ..- attr(*, "class")= chr "collector_double" "collector"
## .. ..$ Prev_OIS : list()
## .. .. ..- attr(*, "class")= chr "collector_character" "collector"
## .. ..$ Officer_Weapon_Caliber : list()
## .. .. ..- attr(*, "class")= chr "collector_character" "collector"
## .. ..$ Officer_Weapon_Type : list()
## .. .. ..- attr(*, "class")= chr "collector_character" "collector"
## .. ..$ Number_of_Shots_Fired_by_Officer: list()
## .. .. ..- attr(*, "class")= chr "collector_integer" "collector"
## .. ..$ How_Cleared : list()
## .. .. ..- attr(*, "class")= chr "collector_character" "collector"
## .. ..$ Location_1 : list()
## .. .. ..- attr(*, "class")= chr "collector_character" "collector"
## ..$ default: list()
## .. ..- attr(*, "class")= chr "collector_guess" "collector"
## ..- attr(*, "class")= chr "col_spec"
source("../01 Data/ETL.OIS_Dataset_Subjects.R")
## Parsed with column specification:
## cols(
## Case_Number = col_character(),
## Date = col_character(),
## Subject_Race_Ethnicity = col_character(),
## Subject_Gender = col_character(),
## Subject_Age = col_integer(),
## Subject_Injuries = col_character(),
## Subject_Drug_or_Alcohol_Use = col_character(),
## Location_1 = col_character()
## )
## Warning in `[<-.factor`(`*tmp*`, is.na(x), value = ""): invalid factor
## level, NA generated
## Warning in `[<-.factor`(`*tmp*`, is.na(x), value = ""): invalid factor
## level, NA generated
## Warning in `[<-.factor`(`*tmp*`, is.na(x), value = ""): invalid factor
## level, NA generated
## Warning in `[<-.factor`(`*tmp*`, is.na(x), value = ""): invalid factor
## level, NA generated
## Warning in `[<-.factor`(`*tmp*`, is.na(x), value = ""): invalid factor
## level, NA generated
## Warning in `[<-.factor`(`*tmp*`, is.na(x), value = ""): invalid factor
## level, NA generated
## Warning in `[<-.factor`(`*tmp*`, is.na(x), value = ""): invalid factor
## level, NA generated
## Classes 'tbl_df', 'tbl' and 'data.frame': 54 obs. of 8 variables:
## $ Case_Number : Factor w/ 52 levels "06-0011398","06-0151964",..: 51 38 30 11 23 52 9 1 46 5 ...
## $ Date : Factor w/ 51 levels "1/1/2006","1/14/2013",..: 43 42 32 10 20 41 44 1 4 28 ...
## $ Subject_Race_Ethnicity : Factor w/ 4 levels "Asian","Black",..: 4 2 2 3 4 4 3 3 4 3 ...
## $ Subject_Gender : Factor w/ 2 levels "Female","Male": 2 2 2 2 2 2 2 2 2 2 ...
## $ Subject_Age : Factor w/ 33 levels "16","18","20",..: 16 14 16 33 9 31 13 21 30 26 ...
## $ Subject_Injuries : Factor w/ 5 levels "injured","killed",..: 2 2 2 5 5 2 5 2 2 5 ...
## $ Subject_Drug_or_Alcohol_Use: Factor w/ 5 levels "alcohol","drugs",..: 2 2 2 2 2 3 4 1 4 4 ...
## $ Location_1 : Factor w/ 51 levels "10607 Golden Quail Drive(30.379803, -97.702036)",..: 50 51 25 27 20 47 39 26 5 6 ...
## - attr(*, "spec")=List of 2
## ..$ cols :List of 8
## .. ..$ Case_Number : list()
## .. .. ..- attr(*, "class")= chr "collector_character" "collector"
## .. ..$ Date : list()
## .. .. ..- attr(*, "class")= chr "collector_character" "collector"
## .. ..$ Subject_Race_Ethnicity : list()
## .. .. ..- attr(*, "class")= chr "collector_character" "collector"
## .. ..$ Subject_Gender : list()
## .. .. ..- attr(*, "class")= chr "collector_character" "collector"
## .. ..$ Subject_Age : list()
## .. .. ..- attr(*, "class")= chr "collector_integer" "collector"
## .. ..$ Subject_Injuries : list()
## .. .. ..- attr(*, "class")= chr "collector_character" "collector"
## .. ..$ Subject_Drug_or_Alcohol_Use: list()
## .. .. ..- attr(*, "class")= chr "collector_character" "collector"
## .. ..$ Location_1 : list()
## .. .. ..- attr(*, "class")= chr "collector_character" "collector"
## ..$ default: list()
## .. ..- attr(*, "class")= chr "collector_guess" "collector"
## ..- attr(*, "class")= chr "col_spec"
This is the link to the Shiny Apps that was published for our project: https://jenniferchung.shinyapps.io/finalproject/
require(ggplot2)
## Loading required package: ggplot2
require(dplyr)
## Loading required package: dplyr
##
## Attaching package: 'dplyr'
## The following objects are masked from 'package:plyr':
##
## arrange, count, desc, failwith, id, mutate, rename, summarise,
## summarize
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
require(shiny)
## Loading required package: shiny
## Warning: package 'shiny' was built under R version 3.3.3
require(shinydashboard)
## Loading required package: shinydashboard
## Warning: package 'shinydashboard' was built under R version 3.3.3
##
## Attaching package: 'shinydashboard'
## The following object is masked from 'package:graphics':
##
## box
require(data.world)
## Loading required package: data.world
##
## Attaching package: 'data.world'
## The following object is masked from 'package:dplyr':
##
## query
require(readr)
require(DT)
## Loading required package: DT
## Warning: package 'DT' was built under R version 3.3.3
##
## Attaching package: 'DT'
## The following objects are masked from 'package:shiny':
##
## dataTableOutput, renderDataTable
require(leaflet)
## Loading required package: leaflet
## Warning: package 'leaflet' was built under R version 3.3.3
require(plotly)
## Loading required package: plotly
## Warning: package 'plotly' was built under R version 3.3.3
##
## Attaching package: 'plotly'
## The following object is masked from 'package:ggplot2':
##
## last_plot
## The following objects are masked from 'package:plyr':
##
## arrange, mutate, rename, summarise
## The following object is masked from 'package:stats':
##
## filter
## The following object is masked from 'package:graphics':
##
## layout
data.world(propsfile = "www/.data.world")
## Warning in utils::read.table(propsfile, header = FALSE, sep = "=",
## row.names = 1, : incomplete final line found by readTableHeader on
## 'www/.data.world'
## $token
## [1] "eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJwcm9kLXVzZXItY2xpZW50Omplbm5pZmVyY2h1bmciLCJpc3MiOiJhZ2VudDpqZW5uaWZlcmNodW5nOjozZTNiMTAzMy1kYzMxLTRmZTAtYTM4NS0yNDFjMjVmNzY2NTUiLCJpYXQiOjE0ODQ2OTcyNDUsInJvbGUiOlsidXNlcl9hcGlfd3JpdGUiLCJ1c2VyX2FwaV9yZWFkIl0sImdlbmVyYWwtcHVycG9zZSI6dHJ1ZX0.wObx6AHihRFAOixo6S51tLFadtGEsOoJNndHSIPajvSdXshuRzzemuLUxuMvU4vSLjWu4g2PesjXPjPqggdRWA"
##
## $baseDWApiUrl
## [1] "https://api.data.world/v0/"
##
## $baseQueryApiUrl
## [1] "https://query.data.world/"
##
## $baseDownloadApiUrl
## [1] "https://download.data.world"
##
## attr(,"class")
## [1] "data.world"
source("../02 Shiny/server.R")
## Loading required package: lubridate
##
## Attaching package: 'lubridate'
## The following object is masked from 'package:plyr':
##
## here
## The following object is masked from 'package:base':
##
## date
## Warning in utils::read.table(propsfile, header = FALSE, sep = "=",
## row.names = 1, : incomplete final line found by readTableHeader on
## 'www/.data.world'
## Warning in utils::read.table(propsfile, header = FALSE, sep = "=",
## row.names = 1, : incomplete final line found by readTableHeader on
## 'www/.data.world'
source("../02 Shiny/ui.R")
This is a box plot that displays the ages of subjects in officer involved shootings. This is separated by the crime that the police were alerted for initially. The color shows the date in which the shootings happened. THE MOST COMMON CALL THAT LEADS TO SHOOTINGS IS DISTURBANCES. ADITIONALLY, CERTAIN CRIMES ARE MORE COMMON ON THE WEEKENDS SUCH AS BURGLARY.
This histogram displays the count of bullets shot by police officers and the frequency/count as well. This histogram shows that most shootings involve low number of bullets. Aditionally, this histogram shows the race of the subjects involved in the shootings which allows us to discern valuable information about race relations and police. FROM A RACIAL PERSPECTIVE, ASIANS ARE THE LEAST LIKELY TO BE INVOLVED IN SHOOTINGS, FOLLOWED BY HISPANICS, BLACKS, THEN WHITES. THIS DOES NOT ACCOUNT FOR POPULATION SIZES.
This scatterplot shows the gradual trend with the increase of shots fired in the Austin area over time. Although this is not a strong correlation, the trend indicates a worrying trend with increases in shooting frequency as well as injuries from shootings.
This crosstab shows the accuracy of police officers in the different scenarios with the weapon of the subject and the location of the shooting. The kpi indicates the hit rate of the officers over the total number of bullets shot. OFFICERS TEND TO BE LESS ACCURATE IN AREAS THAT WOULD INVOLVE INNOCENT BYSTANDERS SUCH AS PARKING LOTS. THEY ARE MUCH MORE ACCURATE IF THEY ARE IN A RESIDENCE OR BACKYARD. THEY ARE ALSO MORE ACCURATE IF THE SUBJECT IS EQUIPPED WITH A RIFLE, POSSIBLY INDICATING THE USE OF SPECIAL FORCES OR ADVANCED POLICE TEAMS.
This barchart indicates the effects of drugs and alcohol on officer involved shootings. Officers shot more often at people under the influence and were more likely to seriously harm or kill these people. WHILE IT APPEARS THAT PEOPLE NOT UNDER THE INFLUENCE ARE SHOT AT MORE, THE COMBINATION OF THE DRUG AND ALCOHOL COLUMNS INDICATE THAT THOSE UNDER THE INFLUENCE ARE IN MUCH GREATER DANGER. IT IS MUCH MORE COMMON FOR THOSE NOT UNDER THE INFLUENCE TO ESCAPE WITH NO INJURY OR MINIMAL INJURIES.
This is a box plot that displays the ages of subjects in officer involved shootings. This is separated by the crime that the police were alerted for initially. THe color shows the date in which the shootings happened. THE MOST COMMON CALL THAT LEADS TO SHOOTINGS IS DISTURBANCES. ADITIONALLY, CERTAIN CRIMES ARE MORE COMMON ON THE WEEKENDS SUCH AS BURGLARY. Similar to the box plot from the Shiny image.
This histogram displays the count of bullets shot by police officers and the frequency/count as well. This histogram shows that most shootings involve low number of bullets. Aditionally, this histogram shows the race of the subjects involved in the shootings which allows us to discern valuable information about race relations and police. FROM A RACIAL PERSPECTIVE, ASIANS ARE THE LEAST LIKELY TO BE INVOLVED IN SHOOTINGS, FOLLOWED BY HISPANICS, BLACKS, THEN WHITES. THIS DOES NOT ACCOUNT FOR POPULATION SIZES. Similar to the histogram from the Shiny image.
This scatterplot shows the gradual trend with the increase of shots fired in the Austin area over time. Although this is not a strong correlation, the trend indicates a worrying trend with increases in shooting frequency as well as injuries from shootings. Similar to the scatterplot from the Shiny image.
This crosstab shows the accuracy of police officers in the different scenarios with the weapon of the subject and the location of the shooting. The kpi indicates the hit rate of the officers over the total number of bullets shot. OFFICERS TEND TO BE LESS ACCURATE IN AREAS THAT WOULD INVOLVE INNOCENT BYSTANDERS SUCH AS PARKING LOTS. THEY ARE MUCH MORE ACCURATE IF THEY ARE IN A RESIDENCE OR BACKYARD. THEY ARE ALSO MORE ACCURATE IF THE SUBJECT IS EQUIPPED WITH A RIFLE, POSSIBLY INDICATING THE USE OF SPECIAL FORCES OR ADVANCED POLICE TEAMS. Similar to the crosstab from the Shiny image.
This barchart indicates the effects of drugs and alcohol on officer involved shootings. Officers shot more often at people under the influence and were more likely to seriously harm or kill these people. WHILE IT APPEARS THAT PEOPLE NOT UNDER THE INFLUENCE ARE SHOT AT MORE, THE COMBINATION OF THE DRUG AND ALCOHOL COLUMNS INDICATE THAT THOSE UNDER THE INFLUENCE ARE IN MUCH GREATER DANGER. IT IS MUCH MORE COMMON FOR THOSE NOT UNDER THE INFLUENCE TO ESCAPE WITH NO INJURY OR MINIMAL INJURIES. Similar to the barchart from the Shiny image.